wowwikifandomcom-20200223-history
API and scripting quirks
World of Warcraft Scripting Quirks * Macros ** Can only cast spells from a hotkey or mouse click ** Macros cannot cast spells on a delay ** /cast only works in Macros ** only one spell or action can be triggered per button press * Slash Command ** Can be use single in the Text Mode ** Can be used in Macros * Frames ** OnUpdate handlers are only called when the frame is visible. ** OnUpdate handles are called every frame. Use with care. ** When nesting frames, you can access the parent frame name in XML names with $parent, this is a textual substitution and cannot be used in Lua. The Lua equivalent to $parent is the GetParent() method of the frame (e.g. getglobal(Frame:GetParent():GetName().."Button") is the same as $parentButton). ** All Frames have a GetID() function which will obtain the ID specified in the XML. ID's must be positive integers enclosed in quotes: ie. id="1" or id="20" ** If you don't specify parent="UIParent" in your top-level frames, your frames won't be scaled according to the currently active UI scale. This can lead to some hair-pulling as you try to figure out why your fonts are so huge. (But, in some cases, not having that scaling might be desirable.) ** If you get no error output, but your addon is simply not being loaded, make sure you don't have a syntax error in your .xml file. A simple way to ensure that your xml is well-formed is to open it in Firefox; it will point out any XML structure errors to you. You can also check the contents of your Logs directory for errors. * Output to the outside world ** The only file output allowed is when the UI engine saves variables before it exits or reloads. Addons use the "## SavedVariables:" header to indicate which data they wish to save. * Functions ** x,y = GetCursorPosition(); will return the current position of the mouse with respect to the object it currently is in. This means x will be 0 if the mouse is at the left edge of a frame or button, regardless of where that frame or button is. ** x,y = GetCursorPosition(UIParent); will return the current position of the mouse with respect to the entire UI. This can be considered the absolute position.. * ChatFrame ** Trying to send colored text to other players will cause your client to disconnect. Not sure if Blizz's server is forcing the disconnect, or my client. *** Example: /tell Name |cFF00FF00Hello|r. The EditBox will show the text in green after replacing "||" with "|". Pressing enter to send the info to the server chat channel results in the following: **** "|r" causes the disconnect, **** "|c" doesn't have the same problem, but will cause the text after it not to show. * Variables ** If you declare a local variable inside an code block (such as an IF block), it is only available inside that code block. ** See Lua Scope for a complete description of the implications of Lua's variable scoping. Category:Interface customization